% -*- mode: latex -*-
% -*- coding: latin-1 -*-

\documentclass{beamer}
\usepackage{color}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{verbatim}

\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps}
\usepackage{amsmath,amssymb}

\usetheme{Antibes}
\setbeamercovered{transparent}

\usefonttheme{default}
\usecolortheme{seagull}


\title{Five - Zope 2 and Zope 3 in Harmony}
\author{Sidnei da Silva}
\institute{Enfold Systems, LLC}

\pgfdeclareimage[width=5cm,height=1.5cm]{enfold-logo}{bg-slide}
\logo{\pgfuseimage{enfold-logo}}


% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command:

% \beamerdefaultoverlayspecification{<+->}

\begin{document}

  \lstset{
    frame=single,
    showstringspaces=false,
    extendedchars=true,
    language=XML,
    backgroundcolor=\color[rgb]{0.95,0.95,0.95},
    rulecolor=\color[rgb]{0.3,0.3,0.3},
    basicstyle=\color[rgb]{0,0,0}\tiny\upshape\ttfamily,
    commentstyle=\color[rgb]{0.5,0.0,0.0}\tiny\rmfamily\itshape,
    keywordstyle=\color[rgb]{0.7,0.0,0.8}\tiny\bfseries,
    stringstyle=\color[rgb]{0.6,0.4,0.4}\tiny,
    identifierstyle=\color[rgb]{0.2,0.2,0.8}\tiny
  }

  \begin{frame}
    \titlepage
  \end{frame}

  \section{Introduction}

  \subsection{What is Five?}

  \begin{frame}
    \frametitle{Motto}

    It was the dawn of the third age of Zope. The Five project was a
    dream given form. Its goal: to use Zope 3 technologies in Zope 2.x
    by creating a Zope 2 product where Zope 3 and Zope 2 could work
    out their differences peacefully.

    (Babylon 5 season 1 intro, creatively quoted)

  \end{frame}

  \begin{frame}
    \frametitle{Motto 2}

    The Law of Fives states simply that: ALL THINGS HAPPEN IN FIVES,
    OR ARE DIVISIBLE BY OR ARE MULTIPLES OF FIVE, OR ARE SOMEHOW
    DIRECTLY OR INDIRECTLY RELATED TO FIVE.

    THE LAW OF FIVES IS NEVER WRONG.

    (Principia Discordia)

  \end{frame}

  \subsection{This talk}

  \begin{frame}
    \frametitle{This talk}

    \begin{itemize}
      \item Five status update - where we are now
      \item Describe Five applications - Five in action
      \item Future
    \end{itemize}

  \end{frame}

  \subsection{Problem and Solution}

  \begin{frame}
    \frametitle{The problem}

    \begin{itemize}
    \item We are using Zope 2 in production
    \item Zope 2 is showing its age
    \item Zope 3 has better ways to do things
    \item But can't just switch, we have customers!
    \end{itemize}
  \end{frame}


  \begin{frame}
    \frametitle{Benefits of using Zope 3 in Zope 2}

    \begin{itemize}
    \item Able to use Zope 3 technologies right away
    \item Do not reinvent the wheel/APIs
    \item Better prepared for Zope 3 transition
    \item Evolution, not revolution
    \item Convergence, not divergence
    \end{itemize}
  \end{frame}

  \section{Status}

  \subsection{Past}

  \begin{frame}
    \frametitle{Last year}

    \begin{itemize}
    \item Last year it was just Martijn Faassen
    \item Last year it was mostly a prototype
    \item Enfold Systems put some work on the prototype and built the Oxfam America website
    \end{itemize}
  \end{frame}

  \subsection{Present}

  \begin{frame}
    \frametitle{This year}

    \begin{itemize}
    \item Philipp, Lennart, many others
    \item Five is in the Zope 3 base
    \item We are using it for production applications
    \item Reenergized Zope 2 development
    \item Paris Sprint

    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{Use Five today}

    \begin{itemize}
    \item Zope 2.8 was released
    \item Zope 2.8 contains Five
    \item Thanks to Paris Sprint and the community
    \item Open source rules
    \end{itemize}
  \end{frame}

  \subsection{Features}

  \begin{frame}
    \frametitle{Features}

    \begin{itemize}
    \item Interfaces (zope.interface)
    \item Schema (zope.schema)
    \item ZCML (zope.configuration)
    \item Adapters (zope.component)
    \item Views, including layers, skins (zope.component)
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{Features, continued}

    \begin{itemize}
    \item Global utilities
    \item Edit forms
    \item Add forms
    \item Menus
    \item Zope 3-style macros
    \end{itemize}
  \end{frame}

  \section{Five in Action}

  \subsection{Oxfam America}

  \begin{frame}
    \frametitle{Oxfam America}

    \begin{itemize}
    \item Enfold Systems
    \item Completely from scratch skin
    \item Uses Zope 3 Page Templates (zope.pagetemplate)
    \item Newbie Zope developer uses Five
    \item One Year's traffic in 15 days
    \item Single dual processor box
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{Oxfam America}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{oxfam_america.png}}
    \caption{Oxfam America}\end{center}\end{figure}
  \end{frame}

  \subsection{UnionCMS}

  \begin{frame}
    \frametitle{UnionCMS}

    \begin{itemize}
    \item Were using Zope 3 in Zope 2 tech before there was Five
    \item Switched to Five soon after it was released
    \item Use schemas, widgets for authoring interface
    \item Dumb content objects with application surrounding it
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{UnionCMS}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{unioncms_1.png}}
    \caption{UnionCMS}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{UnionCMS}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{unioncms_2.png}}
    \caption{UnionCMS}\end{center}\end{figure}
  \end{frame}

  \subsection{SilvaLayout}

  \begin{frame}
    \frametitle{SilvaLayout}

    \begin{itemize}
    \item Infrae
    \item Reusable layout components for Silva
    \item Maintainable site layouts for Silva
    \item WUW (Vienna University of Economics and Business Administration)
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{SilvaLayout}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{wuw_screenshot1.png}}
    \caption{SilvaLayout}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{SilvaLayout}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{wuw_screenshot2.png}}
    \caption{SilvaLayout}\end{center}\end{figure}
  \end{frame}

  \subsection{CPSSharedCalendar}

  \begin{frame}
    \frametitle{CPSSharedCalendar}

    \begin{itemize}
    \item Nuxeo and Infrae
    \item Advanced calendaring application
    \item Aims at forward portability to Zope 3
    \item Not bound to Zope: CalCore is (almost) pure-Python
    \item Not bound to CPS: CalZope runs in straight Zope 2 + Five
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{CPSSharedCalendar}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{cpssharedcalendar1.png}}
    \caption{CPSSharedCalendar}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{CPSSharedCalendar}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{cpssharedcalendar2.png}}
    \caption{CPSSharedCalendar}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{CPSSharedCalendar}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{cpssharedcalendar3.png}}
    \caption{CPSSharedCalendar}\end{center}\end{figure}
  \end{frame}

  \subsection{CPSMailAccess}

  \begin{frame}
    \frametitle{CPSMailAccess}

    \begin{itemize}
    \item Nuxeo
    \item Advanced webmail application
    \item Webmail application
    \item Aims at forward portability to Zope 3
    \item Few dependencies on CPS
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{CPSMailAccess}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{cpsmailaccess1.png}}
    \caption{CPSMailAccess}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{CPSMailAccess}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.200000}{\includegraphics{cpsmailaccess2.png}}
    \caption{CPSMailAccess}\end{center}\end{figure}
  \end{frame}

  \subsection{TextIndexNG3}

  \begin{frame}
    \frametitle{TextIndexNG3}

    \begin{itemize}
    \item Uses Zope 3 component architecture
    \item Integrates with both Zope 2 and Zope 3
    \end{itemize}
  \end{frame}

  \subsection{Flon}

  \begin{frame}
    \frametitle{Flon}

    \begin{itemize}
    \item Five in Plone
    \item Interface to bind marker interfaces to content
    \item Default Page adapter
    \item Index Integration
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{Flon}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.500000}{\includegraphics{flon1.png}}
    \caption{Flon}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{Flon}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.300000}{\includegraphics{flon2.png}}
    \caption{Flon}\end{center}\end{figure}
  \end{frame}

  \begin{frame}
    \frametitle{Flon}

    \begin{figure}[htbp]\begin{center}
    \scalebox{0.300000}{\includegraphics{flon3.png}}
    \caption{Flon}\end{center}\end{figure}
  \end{frame}

  \subsection{Fate}

  \begin{frame}
    \frametitle{Fate}

    \begin{itemize}
    \item Five for Archetypes
    \item \texttt{base\_add}-like functionality
    \item Using Five views to sanely allow filling form before creating object
    \item Death to \texttt{portal\_factory}
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{Fate}

    \lstinputlisting[language=XML]{fate.xml}

  \end{frame}

  \section{Future}

  \subsection{Convergence}

  \begin{frame}
    \frametitle{Convergence}

    \begin{itemize}
    \item Developers from Silva, CPS, Plone, UnionCMS and other Zope 2 apps
    \item CMF and Zope are slowly converging to using Zope 3 interfaces
    \item Enfold Systems is using Five in several projects internally
    \item Five is the path of transition from Zope 2 to Zope 3
    \end{itemize}
  \end{frame}

  \subsection{Soon}

  \begin{frame}
    \frametitle{Soon}

    \begin{itemize}
    \item Cleanup of the Five source code
    \item Improvements in test infrastructure (atomic tests)
    \item i18n (Localizer, PlacelessTranslationService, zope.i18n)
    \item Local utilities (in a branch since Paris Sprint)
    \end{itemize}
  \end{frame}

  \subsection{This year}

  \begin{frame}
    \frametitle{This year}

    \begin{itemize}
    \item Enabling zope.formlib (zc.page) package (new Zope 3 form machinery)
    \item Zope 3.1 support, Zope 3.2 support
    \item Five is on the roadmap for 2.9
    \end{itemize}
  \end{frame}


  \section{Finally}

  \subsection{Join us}

  \begin{frame}
    \frametitle{Join us}

    \begin{itemize}
    \item It's easy: you can use it in Zope 2.8 straight away
    \item It is a cleaner way to write views straight away
    \item Let us know how it's working for you
    \item Join the mailing list, \#z3-base on irc
    \end{itemize}
  \end{frame}

  \subsection{Shameless Plug}

  \begin{frame}
    \frametitle{Shameless Plug}

    \begin{itemize}
    \item Enfold Systems has Five experts
    \item Enfold Systems does Five consulting
    \item We can help you with your Zope 3 migration strategy
    \item Hire us!
    \end{itemize}
  \end{frame}

  \begin{frame}
    \frametitle{Five is Supported}

    \begin{itemize}
    \item Enfold Systems
    \item Infrae
    \item Nuxeo
    \item Five Community
    \item Plone Community - Plone 2.2 should use Five
    \end{itemize}
  \end{frame}

  \subsection{Questions?}

  \begin{frame}
    \frametitle{Questions?}

    \begin{itemize}
    \item Any questions?
    \end{itemize}
  \end{frame}

\end{document}
